#ifndef LEX_ANALYZE_H
#define LEX_ANALYZE_H
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
#include<ctype.h>
#include"../../stl/include/processes.h"

typedef struct
{
    /* data */
    int i;
    int line;
    int row;
    char token[250];//test文件中的字符,用来存放已经读入的字符数组
    char character;//最新读入字符
    int is_f_j;//是否分界
    int is_z_y;//是否转义
    /*function*/
    int (*isNumber)(void *self,const char *s, int lineNo, int colNo);
    int (*symbol)(void *self,char word[],int lineNo, int colNo);//处理标识符表函数
    int (*letter)(void *self);//判断标识符函数
    int (*digit)(void *self);//判断数字的函数
    int (*reserve)(void *self,int lineNo, int colNo);//处理保留字表函数
    int (*toLexAnalyze)(void *self);//词法分析
    void (*getLexAnalyze)(void *self);//词法分析结果打印
    char *pData;
}LexAnalyze;
LexAnalyze* LexAnalyze_creat(const char *filepath);//实例初始化
#endif